
#ifndef __EXTERIOR_EXTRACTION_ALG_H
#define __EXTERIOR_EXTRACTION_ALG_H

#include "../DataTypeInclude.h"


struct ExteriorExtractionAlg
{
	static void ProcessingAlg( const char* lpszVsgFile, vector<string>& vExteriorName );


	static void ProcessingAlgForVxlTest( const char* lpszVsgFile, vector<string>& vExteriorName, DataMap& mapXYZPrj, DataMap& mapYZXPrj, DataMap& mapZXYPrj );

	static void ProjectVxlToBBGrid( const DataMap& mapData, const PT3D& ptBBMin, const PT3D& ptBBMax, DataMap& mapDataProjected );
	
	static void	ProjectVxlLayerToAxisX( const DataMap& mapData, const PT3D& ptBBMin, const PT3D& ptBBMax, vector<string>& vLVxlKey, vector<string>& vRVxlKey );
	//1. Load to Map
	//2. MapXYZ---Z, MapYZX---X, MapZXY---Y
	//3. Find Realated Entity
	//4. Draw the Entity


	//static void	QuickSortAlg( const );

	//static bool	FromKeyStringToVxlIndex( const char* lpszKey, BoxelIndex& vxlIdx );

	static void	FindRelatedEntityName( const DataMap& mapDataPrj, DATA_MAP_TYPE eDMT, const VxlProp& vxlProp, vector<string>& vName );

	static void	FindEntityNameFromKey( const char* lpszKey, const VxlProp& vxl_prop, map<string, int>& mapEntityName );

	static void AppendPrjDataInMap( int x1, int y1, int zKey, int z1, DataMap& mapXYZ );

	static void	LoadExteriorList( const char* lpszFile, vector<string>& vName );
	static void ExportExteriorList( const char* lpszFile, const vector<string>& vName );
};


#endif  //__EXTERIOR_EXTRACTION_ALG_H